#ifndef __MOVIBLE_H__
#define __MOVIBLE_H__

#include <iostream>


class Movible {

private:

	int velocidad;

	/* 
	 * Los valores de la direccion son relativos a la posicion en la que se encuentra, se toma como 
	 * angulo superior izquierdo de la matriz el (0,0)
	 * -1: izquierda o arriba
	 * 1: derecha o abajo
	 */
	int direccion;

	/*
	 * Este atributo se utiliza ya que el pacman se puede mover en vertical u horizontal, pero no en ambos sentidos
	 * true: movimiento horizontal
	 * false: movimiento vertical
	 */
	bool movHorizontal;

public:

	Movible(){
		this->velocidad = 1;
		this->direccion = 1;
		this->movHorizontal = true;
	}

	Movible(int v, int d, bool mh){
		this->velocidad = v;
		this->direccion = d;
		this->movHorizontal = mh;
	}

	~Movible(){ }

	int getVelocidad(){
		return this->velocidad;
	}

	void setVelocidad(int v){
		this->velocidad = v;
	}

	int getDireccion(){
		return this->direccion;
	}

	void setDireccion(int d){
		this->direccion = d;
	}

	bool getMovHorizontal(){
		return this->movHorizontal;
	}

	void setMovHorizontal(bool mh){
		this->movHorizontal = mh;
	}


	/*
	 * Metodo que modifica la direccion de movimiento
	 *
	 */
	void cambiarDireccion() {
		this->direccion = this->direccion * (-1);
	}

	/*
	 * Metodo que modifica la orientacion del movimiento, si es horizontal sera vertical y viceversa.
	 */
	void cambiarOrientacion() {
		this->movHorizontal = !(this->movHorizontal);
	}
	

};

#endif